#pragma once
#include<iostream>
using namespace std;

class Vehicle
{
public:
	virtual void Start() = 0;
	virtual Vehicle* Clone() = 0;
	virtual ~Vehicle(){};
};

class Car :public Vehicle
{
	virtual void Start()override
	{
		cout << "car started with key" << endl;
	}
	virtual Car* Clone()override
	{
		return new Car();
	}
};
class Bike : public Vehicle
{
public:
	void Start() override 
	{
		cout << "Bike started by pedaling." << endl;
	}

	Bike* Clone() override 
	{
		return new Bike();
	}
};